package backed.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Arrays;

@Configuration
public class SwaggerConfig {
    
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("自然智联环保平台 API文档")
                        .description("环保主题Web平台，集二手物品交易、环境数据可视化、AI环保智能体于一体\n\n" +
                                "## 功能模块\n" +
                                "- **用户管理**：用户注册、登录、信息管理\n" +
                                "- **二手商品**：商品发布、查询、管理\n" +
                                "- **订单管理**：订单创建、支付、发货、确认收货\n" +
                                "- **AI智能体**：环保知识问答、个性化方案生成\n" +
                                "- **垃圾分类**：图片识别、分类记录\n" +
                                "- **环保行为**：行为记录、数据统计、排行榜\n" +
                                "- **数据可视化**：减碳量趋势分析\n" +
                                "- **文件管理**：文件上传、删除\n\n" +
                                "## 使用说明\n" +
                                "1. 首先调用 `/api/user/login` 接口进行登录，获取 JWT Token\n" +
                                "2. 点击右上角的 **Authorize** 按钮，输入 Token（格式：Bearer <token> 或直接输入token）\n" +
                                "3. 之后所有需要认证的接口都会自动携带 Token")
                        .version("v1.0.0")
                        .contact(new Contact()
                                .name("开发团队")
                                .email("dev@natural-intelligence.com"))
                        .license(new License()
                                .name("Apache 2.0")
                                .url("https://www.apache.org/licenses/LICENSE-2.0.html")))
                .servers(Arrays.asList(
                        new Server().url("http://localhost:8080").description("本地开发环境"),
                        new Server().url("https://api.natural-intelligence.com").description("生产环境")
                ))
                // 添加安全配置
                .components(new io.swagger.v3.oas.models.Components()
                        .addSecuritySchemes("bearerAuth", new SecurityScheme()
                                .type(SecurityScheme.Type.HTTP)
                                .scheme("bearer")
                                .bearerFormat("JWT")
                                .description("请输入JWT Token。格式：Bearer <token> 或直接输入token")))
                // 全局应用安全要求（所有接口都需要认证，除了登录和注册）
                .addSecurityItem(new SecurityRequirement().addList("bearerAuth"));
    }
}
